= form_errors(issuable)

.form-group
  = f.label :title, class: 'control-label'
  .col-sm-10
    = f.text_field :title, maxlength: 255, autofocus: true, autocomplete: 'off',
        class: 'form-control pad', required: true

    - if issuable.is_a?(MergeRequest)
      %p.help-block
        .js-wip-explanation
          %a.js-toggle-wip{href: "", tabindex: -1}
            Remove the
            %code WIP:
            prefix from the title
          to allow this
          %strong Work In Progress
          merge request to be merged when it's ready.
        .js-no-wip-explanation
          %a.js-toggle-wip{href: "", tabindex: -1}
            Start the title with
            %code WIP:
          to prevent a
          %strong Work In Progress
          merge request from being merged before it's ready.
.form-group.detail-page-description
  = f.label :description, 'Description', class: 'control-label'
  .col-sm-10

    = render layout: 'projects/md_preview', locals: { preview_class: "md-preview", referenced_users: true } do
      = render 'projects/zen', f: f, attr: :description,
                               classes: 'note-textarea',
                               placeholder: "Write a comment or drag your files here..."
      = render 'projects/notes/hints'
      .clearfix
      .error-alert

- if issuable.is_a?(Issue)
  .form-group
    .col-sm-offset-2.col-sm-10
      .checkbox
        = f.label :confidential do
          = f.check_box :confidential
          This issue is confidential and should only be visible to team members with at least Reporter access.

- if can?(current_user, :"admin_#{issuable.to_ability_name}", issuable.project)
  - has_due_date = issuable.has_attribute?(:due_date)
  %hr
  .row
    %div{ class: (has_due_date ? "col-lg-6" : "col-sm-12") }
      .form-group.issue-assignee
        = f.label :assignee_id, "Assignee", class: "control-label #{"col-lg-4" if has_due_date}"
        .col-sm-10{ class: ("col-lg-8" if has_due_date) }
          .issuable-form-select-holder
            = users_select_tag("#{issuable.class.model_name.param_key}[assignee_id]",
                placeholder: 'Select assignee', class: 'custom-form-control', null_user: true,
                selected: issuable.assignee_id, project: @target_project || @project,
                first_user: true, current_user: true, include_blank: true)
          %div
            = link_to 'Assign to me', '#', class: 'assign-to-me-link prepend-top-5 inline'
      .form-group.issue-milestone
        = f.label :milestone_id, "Milestone", class: "control-label #{"col-lg-4" if has_due_date}"
        .col-sm-10{ class: ("col-lg-8" if has_due_date) }
          - if milestone_options(issuable).present?
            .issuable-form-select-holder
              = f.select(:milestone_id, milestone_options(issuable),
                { include_blank: true }, { class: 'select2', data: { placeholder: 'Select milestone' } })
          - else
            .prepend-top-10
            %span.light No open milestones available.
          - if can? current_user, :admin_milestone, issuable.project
            %div
              = link_to 'Create new milestone', new_namespace_project_milestone_path(issuable.project.namespace, issuable.project), target: :blank, class: "prepend-top-5 inline"
      - if issuable.respond_to?(:weight)
        .form-group
          = f.label :label_ids, class: "control-label #{"col-lg-4" if has_due_date}" do
            Weight
          .col-sm-10{ class: ("col-lg-8" if has_due_date) }
            = f.select :weight, issues_weight_options(issuable.weight, edit: true), { include_blank: true },
              { class: 'select2 js-select2', data: { placeholder: "Select weight" }}
      .form-group
        - has_labels = issuable.project.labels.any?
        = f.label :label_ids, "Labels", class: "control-label #{"col-lg-4" if has_due_date}"
        .col-sm-10{ class: "#{"col-lg-8" if has_due_date} #{'issuable-form-padding-top' if !has_labels}" }
          - if has_labels
            .issuable-form-select-holder
              = f.collection_select :label_ids, issuable.project.labels.all, :id, :name,
                { selected: issuable.label_ids }, multiple: true, class: 'select2', data: { placeholder: "Select labels" }
          - else
            %span.light No labels yet.
          - if can? current_user, :admin_label, issuable.project
            %div
              = link_to 'Create new label', new_namespace_project_label_path(issuable.project.namespace, issuable.project), target: :blank, class: "prepend-top-5 inline"
    - if has_due_date
      .col-lg-6
        .form-group
          = f.label :due_date, "Due date", class: "control-label"
          .col-sm-10
            .issuable-form-select-holder
              = f.text_field :due_date, id: "issuable-due-date", class: "datepicker form-control", placeholder: "Select due date"

- if issuable.can_move?(current_user)
  %hr
  .form-group
    = label_tag :move_to_project_id, 'Move', class: 'control-label'
    .col-sm-10
      .issuable-form-select-holder
        = hidden_field_tag :move_to_project_id, nil, class: 'js-move-dropdown', data: { placeholder: 'Select project', projects_url: autocomplete_projects_path(project_id: @project.id) }
      &nbsp;
      %span{ data: { toggle: 'tooltip', placement: 'auto top' }, style: 'cursor: default',
      title: 'Moving an issue will copy the discussion to a different project and close it here. All participants will be notified of the new location.' }
        = icon('question-circle')

- if issuable.is_a?(MergeRequest)
  - if @merge_request.requires_approve?
    .form-group
      = f.label :approver_ids, class: 'control-label' do
        Approvers
      .col-sm-10
        = users_select_tag("merge_request[approver_ids]", multiple: true, class: 'input-large', scope: :all, email_user: true)
        .help-block
          Merge Request should be approved by these users.
          You can override the project settings by setting your own list of approvers.

        .panel.panel-default.prepend-top-10
          .panel-heading
            Approvers
          %ul.well-list.approver-list
            - if @merge_request.new_record?
              - @merge_request.target_project.approvers.each do |approver|
                %li.project-approvers{id: dom_id(approver.user)}
                  = link_to approver.user.name, approver.user
                  .pull-right
                    = link_to "#", data: { confirm: "Are you sure you want to remove approver #{approver.user.name}"}, class: "btn-xs btn btn-remove", title: 'Remove approver' do
                      = icon("sign-out")
                      Remove
              - if @merge_request.target_project.approvers.empty?
                %li.no-approvers There are no approvers
            - else
              - @merge_request.approvers.each do |approver|
                %li{id: dom_id(approver.user)}
                  = link_to approver.user.name, approver.user
                  .pull-right
                    = link_to namespace_project_merge_request_approver_path(@project.namespace, @project, @merge_request, approver), data: { confirm: "Are you sure you want to remove approver #{approver.user.name}"}, method: :delete, class: "btn-xs btn btn-remove", title: 'Remove approver' do
                      = icon("sign-out")
                      Remove
              - if @merge_request.approvers.empty?
                %li.no-approvers There are no approvers
        .help-block.suggested-approvers
          - if @suggested_approvers.any?
            Suggested approvers:
            = raw @suggested_approvers.map{|approver| link_to sanitize(approver.name), "#", id: dom_id(approver) }.join(", ")

  %hr
  - if @merge_request.new_record?
    .form-group
      = f.label :source_branch, class: 'control-label'
      .col-sm-10
        .issuable-form-select-holder
          = f.select(:source_branch, [@merge_request.source_branch], { }, { class: 'source_branch select2 span2', disabled: true })
  .form-group
    = f.label :target_branch, class: 'control-label'
    .col-sm-10
      .issuable-form-select-holder
        = f.select(:target_branch, @merge_request.target_branches, { include_blank: true }, { class: 'target_branch select2 span2', disabled: @merge_request.new_record?, data: {placeholder: "Select branch"} })
      - if @merge_request.new_record?
        &nbsp;
        = link_to 'Change branches', mr_change_branches_path(@merge_request)
  - if @merge_request.can_remove_source_branch?(current_user)
    .form-group
      .col-sm-10.col-sm-offset-2
        .checkbox
          = label_tag 'merge_request[force_remove_source_branch]' do
            = check_box_tag 'merge_request[force_remove_source_branch]', '1', @merge_request.force_remove_source_branch?
            Remove source branch when merge request is accepted.

- is_footer = !(issuable.is_a?(MergeRequest) && issuable.new_record?)
.row-content-block{class: (is_footer ? "footer-block" : "middle-block")}
  - if issuable.new_record?
    = f.submit "Submit #{issuable.class.model_name.human.downcase}", class: 'btn btn-create'
  - else
    = f.submit 'Save changes', class: 'btn btn-save'

  - if !issuable.persisted? && !issuable.project.empty_repo? && (guide_url = contribution_guide_path(issuable.project))
    .inline.prepend-left-10
      Please review the
      %strong #{link_to 'contribution guidelines', guide_url}
      for this project.

  - if issuable.new_record?
    = link_to 'Cancel', polymorphic_path([@project.namespace.becomes(Namespace), @project, issuable.class]), class: 'btn btn-cancel'
  - else
    .pull-right
      - if current_user.can?(:"destroy_#{issuable.to_ability_name}", @project)
        = link_to 'Delete', polymorphic_path([@project.namespace.becomes(Namespace), @project, issuable]), data: { confirm: "#{issuable.class.name.titleize} will be removed! Are you sure?" },
                                                                                                  method: :delete, class: 'btn btn-danger btn-grouped'
      = link_to 'Cancel', polymorphic_path([@project.namespace.becomes(Namespace), @project, issuable]), class: 'btn btn-grouped btn-cancel'

%li.project-approvers.hide.approver-template{id: "user_{user_id}"}
  = link_to "{approver_name}", "#"
  .pull-right
    = link_to "#", data: { confirm: "Are you sure you want to remove approver {approver_name}"}, class: "btn-xs btn btn-remove", title: 'Remove approver' do
      = icon("sign-out")
      Remove
